package com.banban.user.service;

import com.banban.user.domain.SysUser;
import com.banban.user.dto.*;
import com.banban.user.vo.ConversationSelectVO;
import com.banban.user.vo.UserInfoVO;
import com.banban.user.vo.UserPageVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import java.util.List;

public interface UserService extends IService<SysUser> {
    void bindNfc(String nfcId);

    String uploadPic(MultipartFile file);

    void registerNew(RegisterDTO dto);

    UserInfoVO getUserInfo();

    Integer verifyCodeLogin(CodeVerifyLoginDTO dto);

    Integer getCodeVerify(String phone) throws Exception;

    String getDefaultPicUrl();

    void updateUserInfo(UpdateUserDTO dto);

    void notBindNfc(String nfcId);

    void logout();

    Integer nfcLogin(String nfcId);

    IPage<UserPageVO> userPage(UserPageDTO dto);

    UserPageVO getUserInfoById(String id);

    void updateUserInfoById(UpdateUserDTO dto);

    void lockUser(UpdateUserDTO dto);

    void registerAndLogin(RegisterDTO dto);

    void notBindPhoneGetCode(String phone) throws Exception;

    void updatePhoneGetCode(String phone) throws Exception;

    void updatePhone(UpdatePhoneDTO dto);

    List<ConversationSelectVO> getHistory();

    void deleteUser(UpdateUserDTO dto);

    void nfcLoginGetCode(String phone) throws Exception;

    List<String> getHistoryDate();

    List<ConversationSelectVO> getHistoryByDate(GetHistoryByDateDTO dto);
}
